1. Technical Field
The present disclosure relates generally to information processing systems and, more specifically, to error handling in processor systems.
2. Background Art
Error handling in computer systems involve error detection and error recovery. In error recovery, errors should be contained and computer systems should be highly available. Computer systems utilizing error handling that is coordinated among processors, system logic hardware, firmware and operating system can contain errors and reduce the time computer systems are not available. Additionally, the processor(s), system logic hardware, firmware and operating system should have interfaces to one another to allow coordination between them during error handling.
System software is defined herein as any code, including firmware code, that is executed in a privileged mode, such as any code that runs at ring 0 privilege level. This definition of system software is intended to include the firmware and operating system (OS) kernel that is executed by a single CPU in a single processor system, or is executed by a plurality of CPUs in a multi-processor system. Thus, system software may include firmware, such as PAL and SAL code (discussed below), as well as operating system kernel software code.
Firmware as used herein refers to code routines that are stored in non-volatile memory structures such as read only memories (ROMs), flash memories, and the like. These memory structures preserve the code stored in them even when power is shut off. Even though firmware is stored in non-volatile memory, firmware may be copied or shadowed to volatile memory. Typically, this is done for performance reasons.
One of the principal uses of traditional firmware is to provide necessary instructions or routines that control a computer system when it is powered up from a shut down state, before volatile memory structures have been tested and configured. Firmware routines may also be used to reinitialize or reconfigure the computer system following various hardware events and to handle certain platform events like system interrupts.
Another typical use of traditional firmware is to provide complex sequences to be performed in processors that utilize complex instruction sets. A typical instruction in a CISC (complex instruction set computer) computer processor performs a series of operations, with microinstructions that define some of the more complex operations being encoded in a non-volatile storage area in the form of microcode. The microcode defines all or a portion of the executable instruction set for the processor, and may also define internal operations that are not implemented in software-accessible code. The microcode is typically placed in a read-only memory (ROM) within the processor at the time the processor is manufactured.
Operating systems (OS) interact with firmware to provide an environment in which applications can be executed by the CPU. By utilizing firmware, an OS can be designed to run on many different processing systems without re-writing the OS for each variation in platforms. For at least one embodiment, the term operating system, as used herein, is intended to broadly encompass any privileged software layer that performs scheduling, including a scheduling layer that is distributed over a cluster of platforms.